package clases

import excepciones.NoReservableExcepcion
import scala.collection.mutable.ArrayBuffer

class Cancha {
  val reservas = ArrayBuffer.empty[Reserva]
  def horaMaximaDeJuego = 18
  def horaMinimaDeJuego = 9
  
  def reservatePara(r: Reserva) {
    if(!sePuedeReservar(r)) {
      throw new NoReservableExcepcion("no se puedo reservar, la cancha podria estar ocupada ese dia, asegurese de haber ingresado un horario habil para la cancha")
    }
    reservas += r
  }

  var numero: Int = 0

  def sePuedeReservar(reserva: Reserva): Boolean = {
    cumpleHorarios(reserva) && noHayReservasQueSeSuperponganCon(reserva)
  }
  def noHayReservasQueSeSuperponganCon(reserva: Reserva) = {
    (reservas.forall(_.noEstaOcupadaDurante(reserva)) || reservas.isEmpty)
  }
  def cumpleHorarios(reserva: Reserva): Boolean = {
    (reserva.horaInicio >= horaMinimaDeJuego
      && reserva.horaFin <= horaMaximaDeJuego)
  }

  def tenesReservaElDia(diax: Int): Boolean = {
    reservas.exists(a => a.dia == diax)
  }
  
}